package io.framework.modules.air.service;

import io.framework.common.page.PageData;
import io.framework.common.service.CrudService;
import io.framework.modules.air.dto.AirDTO;
import io.framework.modules.air.dto.AirExDTO;
import io.framework.modules.air.entity.AirEntity;

import java.util.List;
import java.util.Map;

/**
 * 空气站点监测数据
 *
 * @author Gujq email
 * @since 1.0.0 2020-05-20
 */
public interface AirService extends CrudService<AirEntity, AirDTO> {

    /**
     * 分页
     *
     * @param params
     * @return
     */
    PageData<AirDTO> page(Map<String, Object> params);

    /**
     * 全市AQI日历
     *
     * @param params
     * @return
     */
    List<Map<String, Object>> aqiCalendar(Map<String, Object> params);

    /**
     * aqi污染物浓度变化对比
     *
     * @param params
     * @return
     */
    List<Map<String, Object>> aqiHistoryChange(Map<String, Object> params);

    /**
     * 站点污染物浓度变化
     *
     * @param params
     * @return
     */
    List<Map<String, Object>> factorHistoryChange(Map<String, Object> params);

    /**
     * 获取空气监测数据信息
     *
     * @param params
     * @return
     */
    AirDTO getAirDTOIOnfoByParams(Map<String, Object> params);

    /**
     * 获取空气监测 最新一条数据
     *
     * @param params
     * @return
     */
    AirDTO getAirDTOIOnfoByParam(Map<String, Object> params);


    List<Map<String, Object>> getAirStationInfoSort(Map<String, Object> params);

    /**
     * 验证空气数据上传  防止重复上传
     *
     * @param type
     * @param month
     * @return
     */
    Boolean checkData(Integer type, String month);

    /**
     * 删除历史数据，重新上传
     *
     * @param month
     */
    void deleteInfoByMonth(String month);

    AirEntity getByStationIdAndDate(AirEntity airEntity);


    List<Map<String, Object>> aqiHistoryPm(Map<String, Object> params);


    List<AirExDTO> getAirRecentTime(String createTime);
}
